package cn.lx.lazy;

import cn.lx.demo.Product;

import java.util.HashMap;
import java.util.Map;

/**
 * @author lixin
 * @Classname ProductFactory
 * @Description 延迟加载的工厂类, 延迟框架可以扩展，例如jdbc连接池，都会要求设置一个MaxConnections的最大连接数量，
 * 该数量就是内存中最大实例化的数量。
 * @Date 2019/10/4 上午11:09
 */
public class ProductFactory {
    public static final Map<String, Product> prMap = new HashMap<String, Product>();

    public static synchronized Product createProduct(String type) throws Exception {
        Product product = null;
        if (prMap.containsKey(type)) {
            prMap.get(type);
        } else {
            if ("Product1".equals(type)) {
                product = new Product() {
                    public void method1() {
                    }

                    public void method2() {
                    }
                };
            }
            prMap.put(type, product);

        }
        return product;
    }
}
